package com.woniuxy.consumer.config;

import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RandomRule;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;

/**
 * @Author: yangtao
 * @date 2021/8/2 14:36
 * @Version 1.0
 */
@Configuration
public class RpcConfiguration {
    //RestTemplate  在springboot项目之间进行服务调用对象
    @Bean
    @LoadBalanced  //开启 restTemplate负载均衡策略
    public RestTemplate restTemplate(){
        //设置ribbon超时时间，多长时间没有调用到被调用的微服务
        SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
        //设置是全局设置，只要是通过consumer调用其他的微服务，超时时间是统一的
        factory.setReadTimeout(1000); //在1秒钟之内没有得到数据，则请求失败，超时
        factory.setConnectTimeout(2000);  //两秒钟都没有连接到被调用的微服务就超时（失败）
        return new RestTemplate(factory);
    }
    /*//设置负载均衡策略
    @Bean
    public IRule rule(){
        return new RandomRule();
    }*/
}
